import "@site/src/languages/highlight";

# DB

**描述：**

&emsp;&emsp;用于进行数据库操作的类。

## Column

**类型：** 成员变量。

**描述：**

&emsp;&emsp;数据库列可以存储的数据类型定义。
其中布尔类型仅支持false数值用于表示数据库中的空值（NULL）。

**签名：**
```tl
type Column = integer | number | string | boolean
```

## Row

**类型：** 成员变量。

**描述：**

&emsp;&emsp;数据库行的类型定义。

**签名：**
```tl
type Row = {Column}
```

## SQL

**类型：** 成员变量。

**描述：**

&emsp;&emsp;SQL查询的类型定义。
可以是SQL字符串或是SQL字符串加上参数列表。

**签名：**
```tl
type SQL = string | {string, {Row}}
```

## exist

**类型：** 函数。

**描述：**

&emsp;&emsp;检查数据库中是否存在特定名称的数据表。

**签名：**
```tl
exist: function(self: DB, tableName: string, schema?: string): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| tableName | string | 要检查的表名。 |
| schema | string | [可选] 数据库的视图名称。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 数据表是否存在。 |

## transaction

**类型：** 函数。

**描述：**

&emsp;&emsp;将一组SQL语句作为单个事务执行。

**签名：**
```tl
transaction: function(self: DB, sqls: {SQL}): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sqls | \{SQL} | 要执行的SQL语句列表。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 事务是否执行成功。 |

## transactionAsync

**类型：** 函数。

**描述：**

&emsp;&emsp;将一组SQL语句作为单个事务做异步的执行。

**签名：**
```tl
transactionAsync: function(self: DB, sqls: {SQL}): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sqls | \{SQL} | 要执行的SQL语句列表。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 事务是否执行成功。 |

## query

**类型：** 函数。

**描述：**

&emsp;&emsp;执行SQL查询并将结果作为Lua表返回。

**签名：**
```tl
query: function(
		self: DB,
		sql: string,
		args: Row,
		withColumn?: boolean --[[false]]
	): {Row} | nil
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sql | string | 要执行的SQL语句。 |
| args | Row | [可选] 要插入到SQL语句中的参数列表。 |
| withColumn | boolean | [可选] 是否在查询结果中包含列名（默认为false）。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| \{Row} \| nil | 查询返回的Lua表，如果查询失败则返回nil。 |

## query

**类型：** 函数。

**描述：**

&emsp;&emsp;执行SQL查询并将结果作为Lua表返回。

**签名：**
```tl
query: function(
		self: DB,
		sql: string,
		withColumn?: boolean --[[false]]
	): {Row} | nil
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sql | string | 要执行的SQL语句。 |
| withColumn | boolean | [可选] 是否在查询结果中包含列名（默认为false）。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| \{Row} \| nil | 查询返回的Lua表，如果查询失败则返回nil。 |

## insert

**类型：** 函数。

**描述：**

&emsp;&emsp;将数据行插入数据表中，插入动作会在一个事务中执行。

**签名：**
```tl
insert: function(self: DB, tableName: string, values: {Row}): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| tableName | string | 要插入的表名。 |
| values | Row | 要插入表中的值。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 插入是否成功。 |

## exec

**类型：** 函数。

**描述：**

&emsp;&emsp;执行SQL语句并返回受影响的行数。

**签名：**
```tl
exec: function(self: DB, sql: string): integer
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sql | string | 要执行的SQL语句。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| integer | 语句执行影响的行数，如果语句执行失败则返回-1。 |

## exec

**类型：** 函数。

**描述：**

&emsp;&emsp;执行SQL语句并返回受影响的行数

**签名：**
```tl
exec: function(self: DB, sql: string, values: Row): integer
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sql | string | 要执行的SQL语句。 |
| values | Row | 要插入到SQL语句中的参数。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| integer | 语句执行影响的行数，如果语句执行失败则返回-1。 |

## exec

**类型：** 函数。

**描述：**

&emsp;&emsp;在一个事务中以不同的参数多次执行SQL语句并返回受影响的行数。

**签名：**
```tl
exec: function(self: DB, sql: string, values: {Row}): integer
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sql | string | 要执行的SQL语句。 |
| values | \{Row} | 要插入到SQL语句中的参数列表。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| integer | 语句执行影响的行数，如果语句执行失败则返回-1。 |

## insertAsync

**类型：** 函数。

**描述：**

&emsp;&emsp;在一个事务中异步将数据行插入数据表中。

**签名：**
```tl
insertAsync: function(self: DB, tableName: string, values: {Row}): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| tableName | string | 要插入的表名。 |
| values | \{Row} | 要插入数据表的值列表。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 插入是否成功。 |

## insertAsync

**类型：** 函数。

**描述：**

&emsp;&emsp;在一个事务中异步从Excel文件插入数据到数据表中

**签名：**
```tl
insertAsync: function(self: DB, tableSheets: {string}, excelFile: string, startRow: integer): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| tableSheets | \{string} | 要插入的数据表（和Excel表相同）的名称。 |
| excelFile | string | 包含插入数据的Excel文件的路径。 |
| startRow | integer | 开始插入数据的Excel行号，行号从1开始 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 插入是否成功。 |

## insertAsync

**类型：** 函数。

**描述：**

&emsp;&emsp;在一个事务中异步从Excel文件插入数据到数据表中。

**签名：**
```tl
insertAsync: function(self: DB, tableSheets: {{string, string}}, excelFile: string, startRow: integer): boolean
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| tableSheets | \{\{string, string}} | 要插入的数据表和对应Excel工作表名称的列表。 |
| excelFile | string | 包含插入数据的Excel文件的路径。 |
| startRow | integer | 开始插入数据的Excel行号，行号从1开始。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| boolean | 插入是否成功。 |

## queryAsync

**类型：** 函数。

**描述：**

&emsp;&emsp;异步执行SQL查询并将结果作为Lua表返回。

**签名：**
```tl
queryAsync: function(
		self: DB,
		sql: string,
		args: Row,
		withColumn?: boolean --[[false]]
	): {Row} | nil
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sql | string | 要执行的SQL语句。 |
| args | Row | [可选] 要插入到SQL语句中的参数。 |
| withColumn | boolean | [可选] 是否在查询结果中包含列名（默认为false）。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| \{Row} \| nil | 查询返回的Lua表，如果查询失败则返回nil。 |

## queryAsync

**类型：** 函数。

**描述：**

&emsp;&emsp;异步执行SQL查询并将结果作为Lua表返回。

**签名：**
```tl
queryAsync: function(
		self: DB,
		sql: string,
		withColumn?: boolean --[[false]]
	): {Row} | nil
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sql | string | 要执行的SQL语句。 |
| withColumn | boolean | [可选] 是否在查询结果中包含列名（默认为false）。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| \{Row} \| nil | 查询返回的Lua表，如果查询失败则返回nil。 |

## execAsync

**类型：** 函数。

**描述：**

&emsp;&emsp;以不同的参数多次异步执行同一条SQL语句并返回受影响的行数。

**签名：**
```tl
execAsync: function(self: DB, sql: string, values: {Row}): integer
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sql | string | 要执行的SQL语句。 |
| values | \{Row} | 要插入到SQL语句中的参数列表。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| integer | 语句执行影响的行数，如果语句执行失败则返回-1。 |

## execAsync

**类型：** 函数。

**描述：**

&emsp;&emsp;异步执行SQL语句并返回受影响的行数。

**签名：**
```tl
execAsync: function(self: DB, sql: string): integer
```

**参数：**

| 参数名 | 类型 | 描述 |
| --- | --- | --- |
| sql | string | 要执行的SQL语句。 |

**返回值：**

| 返回类型 | 描述 |
| --- | --- |
| integer | 语句执行影响的行数，如果语句执行失败则返回-1。 |